package cn.com.bsfit.netty.req;

import cn.com.bsfit.netty.config.base.BaseConfigurable;
import cn.com.bsfit.netty.config.constants.NettyConstants;

import java.util.Collections;
import java.util.List;

/**
 * 接口名 IJsonReqFormat
 * 描述 JSON请求格式接口，也就是JSON的报文格式
 *
 * @author hedonglin
 * @version 1.0
 * @date 2019/9/29 11:22
 */
public interface IReqDataFormat extends BaseConfigurable {
    /**
     * 方法描述: 获取请求JSON对象顶层字段集合，可能可以同时支持多种JSON
     * 当然，如果没有就会直接直接首部字段和主体字段，返回也是只有首部和主体部分
     *
     * @return {@link List<String>} 支持的JSON顶层字段集合
     * @author hedonglin
     * @date 2019/9/29 11:25
     */
    default List<String> getTopField() {
        return Collections.singletonList(NettyConstants.REQ_TOP_DEFAULT_KEY);
    }

    /**
     * 方法描述: 获取请求JSON对象首部字段集合，可能可以同时支持多种JSON
     *
     * @return {@link List<String>} 支持的JSON首部字段集合
     * @author hedonglin
     * @date 2019/9/29 11:25
     */
    default List<String> getHeadField() {
        return Collections.singletonList(NettyConstants.REQ_HEAD_DEFAULT_KEY);
    }

    /**
     * 方法描述: 获取请求JSON对象主体字段集合，可能可以同时支持多种JSON
     *
     * @return {@link List<String>} 支持的JSON主体字段集合
     * @author hedonglin
     * @date 2019/9/29 11:25
     */
    default List<String> getBodyField(){
        return Collections.singletonList(NettyConstants.REQ_BODY_DEFAULT_KEY);
    }

}
